var mongoose=require('mongoose')
//连接数据库
var db=mongoose.createConnection('mongodb://127.0.0.1:27017/warehouse')
//定义模型 规定数据类型 key 与表(集合) 必须一致
var newScheam=mongoose.Schema({
	_id:String,//商家id
	StoreName:String,//店铺名称
	wallet:Number,//钱包
	order:Array,//销售记录
	ToBeShipped:Array,//未发货订单
	Shipped:Array,//已发货订单
	commodity:Array,//商品列表
	address:Array,//发货地址
	refund:Array,//退款
	chats:Array,//聊天消息列表
})
//关联表(集合) 
var merchant=db.model('merchants',newScheam)

class operation {
	constructor(mode) {
		this.mode=(parms)=>{
			return new merchant(parms);
		}
	};
	//新添仓库表
	append(obj={}){
		return new Promise((resolve,reject)=>{
			if(!obj._id){
				reject('_id 为必填项')
			}
			var StoreName=obj.StoreName||null;
			var password=obj.password||null;
			// 默认参数
			var DefaultParams={
				wallet:0,//钱包
				StoreName:'',
				order:[],//销售记录
				ToBeShipped:[],//未发货订单
				Shipped:[],//已发货订单
				commodity:[],//商品列表
				address:[],//发货地址
				refund:[],//退款
				chats:[],//聊天消息列表
			}
			for(var key in obj)
				DefaultParams[key]=obj[key]
			this.mode(DefaultParams)
			.save().then(
			 result=>{
				resolve('仓库床架成功')
			 },
			 err=>{
				 resolve('仓库床架失败')
			 }
			)
		})
	};
	//查询数据
	getDate(_id){
		return new Promise((resolve,reject)=>{
			merchant.find({_id},(err,doc)=>{
				if(err||!doc[0]){
					resolve(null)
					return;
				}
				resolve(doc[0])
			})
		})
	};
	//修改数据
	upDate(query,parms){
		return	new Promise((resolve,reject)=>{
			if(parms._id){
				reject('不能修改_id')
			}
				(query instanceof Object && parms instanceof Object)?
					merchant.updateOne(query,parms,(err,doc)=>{
						if(err){
							console.log('错误')
								reject(err)
								return;
							}
							if(!doc.acknowledged) reject('没有这项参数')
							resolve(doc)
					})
				:reject('参数错误 查询条件 修改数据');
			})
	}
}

module.exports= new operation(merchant)
